2019.5.5 星期日 21:00
语法
基本
数据类型
CURD
#### 更新字段值
UPDATE book_comment SET title=left(content,10) WHERE product_id=24243060;
#### 查找有无数据
Mysql判断记录是否存在
select count(*) from tablename where col = ‘col’;
select 1 from tablename where col = ‘col’ limit 1;
执行这条sql语句,所影响的行数不是0就是1。
特别解释下limit 1,mysql在找到一条记录后就不会往下继续找了。性能提升很多。
#### 查看
select * from book_comment limit 10\G
查字段(名称,类型)
1 | show columns from site_book_comment; |
2) mysql 查看表中字段的数据类型
// 2_1 查询结果显示
desc 表名;
show columns from 表名;
describe 表名;
// 2_2 sql语句显示
show create table 表名;
// 2_3:还可以通过专门的管理表来查看
use information_schema
select * from columns where table_name=’表名’;
密码设置
设置密码:./bin/mysqladmin -u root password 123456
mysqladmin -u root -p password
回车后直接输入新密码
1 | SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass'); |
设置权限
允许远程访问1
2
3
4
5
6
7
8
9
10
11
12
13
14
15use mysql;
select host,user from user;
update user set host = '%' where user = 'root';
grant all privileges on *.* to 'root'@'%';
flush privileges;
show grants for 'root'@'%';
-- 2. 如果想让授权的用户,也可以将这些权限 grant 给其他用户,需要选项 “grant option“
-- 这个特性一般用不到。实际中,数据库权限最好由 DBA 来统一管理。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'sql-0122' WITH GRANT OPTION;
-- grant, revoke 用户权限后,该用户只有重新连接 MySQL 数据库,权限才能生效。
### 撤销 只需要把关键字 to 换成 from 即可:
revoke all on *.* from dba@localhost;
因为新版的的mysql版本已经将创建账户和赋予权限的方式分开了
创建账户:create user ‘用户名‘@’访问主机’ identified by ‘密码’;
赋予权限:grant 权限列表 on 数据库 to ‘用户名‘@’访问主机’ ;(修改权限时在后面加with grant option)grant select, insert, update, delete on testdb.* to common_user@'%'
时间自动更新
1 | `creat_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP |
MySQL5.6.5以上的版本、CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP都适用于datetime、timestamp类型。
上述在navicat中的操作:找到相应的表—右击—>点击 设计表—> 选中 ‘根据当前时间戳更新’。
索引
[MySQL(五) MySQL中的索引详讲]
三、索引的分类
注意:索引是在存储引擎中实现的,也就是说不同的存储引擎,会使用不同的索引
MyISAM和InnoDB存储引擎:只支持BTREE索引, 也就是说默认使用BTREE,不能够更换
MEMORY/HEAP存储引擎:支持HASH和BTREE索引
1、索引我们分为四类来讲 单列索引(普通索引,唯一索引,主键索引)、组合索引、全文索引、空间索引、
1.1、单列索引:一个索引只包含单个列,但一个表中可以有多个单列索引。 这里不要搞混淆了。
1.1.1、普通索引:MySQL中基本索引类型,没有什么限制,允许在定义索引的列中插入重复值和空值,纯粹为了查询数据更快一点。
1.1.2、唯一索引:索引列中的值必须是唯一的,但是允许为空值,
1.1.3、主键索引:是一种特殊的唯一索引,不允许有空值。
1.2、组合索引
在表中的多个字段组合上创建的索引,只有在查询条件中使用了这些字段的左边字段时,索引才会被使用,使用组合索引时遵循最左前缀集合。这个如果还不明白,等后面举例讲解时在细说
1.3、全文索引
全文索引,只有在MyISAM引擎上才能使用,只能在CHAR,VARCHAR,TEXT类型字段上使用全文索引,介绍了要求,说说什么是全文索引,就是在一堆文字中,通过其中的某个关键字等,就能找到该字段所属的记录行,比如有”你是个大煞笔,二货 …” 通过大煞笔,可能就可以找到该条记录。这里说的是可能,因为全文索引的使用涉及了很多细节,我们只需要知道这个大概意思,如果感兴趣进一步深入使用它,那么看下面测试该索引时,会给出一个博文,供大家参考。
1.4、空间索引
空间索引是对空间数据类型的字段建立的索引,MySQL中的空间数据类型有四种,GEOMETRY、POINT、LINESTRING、POLYGON。
在创建空间索引时,使用SPATIAL关键字。
要求,引擎为MyISAM,创建空间索引的列,必须将其声明为NOT NULL。具体细节看下面
引擎
安装
MySQL Community Downloads
MySQL Product Archives
windows
安装mysql服务,命令行必须以管理员身份打开(同mongo)
记得关闭开机自动启动(同mongo服务)。
net start mysql 必须管理员。否则提示发生系统错误 5;拒绝访问!
环境变量配置 可选。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21# mysqld --defaults-file="D:\server\mysql-8.0.21\mysql.ini" --initialize-insecure --user=root --console
mysqld --defaults-file="D:\server\mysql-8.0.21\mysql.ini" --initialize --user=root --console
mysqld --install MySQL --defaults-file="D:\server\mysql-8.0.21\mysql.ini" ## 安装服务
mysqld --remove ## 删除服务
net start mysql ## 启动。 或者 mysqld --defaults-flie="D:\server\mysql-8.0.21\mysql.ini" --console
net stop MySQL ## 关闭。或者 mysqladmin -uroot shutdown
# 连接mysql
## 如果使用--initialize-insecure 需要设置密码
mysql -u root -p # (第一次登录没有密码,直接按回车过)
## 修改密码。(注意不是sql语句,是命令行)
mysqladmin -u root -p password # 修改密码;输入密码时回车,然后才输入新的密码123456;确认
mysql -u root -p ## 设置密码后。用密码登录
## 如果使用--initialize ;会打印一个密码;然后去修改
mysql -u root -p pwd
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
exit # 退出
- –defaults-file 必须放置第一个位置。否则会报错
- –console 是输出过程。否则中间报错,并不清楚
- -insecure 初次设置和用户密码有关。设置或修改
mysqld –initialize-insecure自动生成无密码的root用户,
mysqld –initialize自动生成带随机密码的root用户。 - 如果出错/初始化的时候,要清空data文件夹
- 先启动mysqld –defaults-file 和 mysqld install 先后位置应该可以换
mysql.ini1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir="D:/Server/mysql-8.0.21"
# 设置mysql数据库的数据的存放目录
datadir="D:/data/mysql"
log-error="D:/var/log/mysql_err.log"
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
linux
异常
“Security”
Fatal error: Please read “Security” section of the manual to find out how to run mysqld as root
需要指定user mysqld --defaults-file=/etc/mysql.conf --user=root
mysql.sock
Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
登录需要指定host mysql -u root -h 127.0.0.1
。
或者指定 mysql sock的地址,并创建软链接在 /etc/mysql.confln -s /usr/local/mysql-8.0/mysql.socket /tmp/mysql.sock
远程连接
设置运行连接权限。 host-> %, 权限:all等
防火墙
工具
实际用了MySQL-Front,sqlYog,还有基于php的mysql-admin
- EMS MySQL Manager
强大的mysql管理工具,允许用户通过图形界面创建或编辑数据库对象,并提供通过sql语句管理用户和权限,通过图形界面建立sql语句,自动生成html格式的数据库文档,导入/导出数据,查看/编辑blob字段等功能。 MySQL-Front
mysql数据库的图形工具,主要特性包括多文档界面,语法突出,拖拽方式的数据库和表格,可编辑/可增加/删除的域,可编辑/可插入/删除的记录,可显示的成员,可执行的SQL 脚本,提供与外程序接口,保存数据到CSV文件等。Navicat for MySQL
一套适用于MySQL数据库系统地图形化数据库管理、报告以及监控的工具。新版本具有高性能的、具有商业智能的、强大的备份功能,此外还有许多的改进。含简体中文文件。MySqlYog
MySqlYog软件是纯JAVA编写的软件,可以运行于WINDOWS,LINUX,UNIX系统,基本版本可以实现对数据库的基本管理,可视化创建表,视图,触发器,数据库的热备份,恢复,可远程管理系统等功能。MySQL Browser
- Workbench
- Sequel Pro
Navicat
windows
当然有的朋友在官网下载比较慢,我也为大家准备好了,Navicat premium 15安装包和破解工具
在 1) Patch 中选择Backup、Host、Navicat v15这三个,默认也是选择了这三个;勾选这三个后点击Patch
点击Patch按钮并找到Navicat Premium 15的安装目录的navicat.exe文件
2.License. Product and Language
License里选中Enterprise、在Produce里选择Premium、在Languages里选择Simplified Chinese(简体中文)
3.Resale License
保持默认选择即可
4.Keygen / Offline Activation
点击Generate按钮就会生成一个许可证秘钥,将许可证秘钥复制后就打开Navicat Premium 15
mac
- 下载 navicat150_premium_cs.dmg 后打开并将 Navicat Premium 拖放到 /Application (即 应用程序) 中
- 通过如下命令,使用 navicat-patcher 替换掉公钥
./navicat-patcher /Applications/Navicat\ Premium.app/
- 生成一份自签名的代码证书,并总是信任该证书。这一步非常重要
按步骤生成了Navicat证书,也选择了“始终信任”,可是提示
<!–error: The specified item could not be found in the keychain.
意思是钥匙串里没有证书,,搜索才知道,,要把证书拖动到“系统”下
参考:刚刚也碰到了这个问题,创建证书到系统最后会报未知错误。网上找了一下解决方法:指定用于该证书的位置时先选择登录,创建成功后,这个证书显示在登录选项里面。选中这个证书直接拉到系统选项上,然后系统选项里也有了这个证书,最后删除登录里面的这个证书,就OK了。
然后运行就可以了,会提示
–>
- 用 codesign 对 libcc-premium.dylib (如果有的话) 和 Navicat Premium.app 重签名。
如果你的Navicat Premium版本号高于15.0.0,
你必须先签名 libcc-premium.dylib,再签名 Navicat Premium.app。
1 | codesign -f -s Navicat /Applications/Navicat\ Premium.app/Contents/Frameworks/libcc-premium.dylib |
5 接下来使用 navicat-keygen 来生成 序列号 和 激活码。
- 断开网络 并打开 Navicat
找到注册窗口,填入注册机给你的序列号。然后点击激活按钮。 - 一般来说在线激活肯定会失败,这时候Navicat会询问你是否手动激活,直接选吧。
- 在手动激活窗口你会得到一个请求码,复制它并把它粘贴到keygen里。最后别忘了连按至少两下回车结束输入。
- 如果不出意外,你会得到一个看似用Base64编码的激活码。
直接复制它,并把它粘贴到Navicat的手动激活窗口,最后点激活按钮。
如果没什么意外的话应该能成功激活。